Gibt es besonders Gefährliche Arten von Orten ([Premise Desc])
Motels, Parking Lot, Street
Internet aka. Cyberspace
Welche Arten von Waffen wird am meisten genutzt?
Meistens nur unbewaffnet
Recht viele Schusswaffen
Wie viel Prozent haben zu Verhaftungen (und welcher Art) geführt?
Hoffentlich über 80%
Gibt es zeitliche Rahmen in denen mehr oder weniger Verbrechen geschehen?
Am meisten am Abend/in der Nacht
Anfang/Ende des Monats mehr Diebstahl/Raub? –> Gehalt auszahlung Diebstahl usw.?
Wochenenden -> Party etc
Sommer -> Menschen drehen bei Hitze durch
Dunkle Jahreszeiten -> Schutz in der Dunkelheit
Wie effektiv ist die LAPD bei der Aufklärung verschiedener Arten von Straftaten?
Straftaten mit direktem Opfer mehr (Zeugen vorhanden)
Welche Straftaten werden häufig am Anfang/Ende des Monats begangen?
Gehalt auszahlung Diebstahl usw.?
Wie hat sich die Kriminalität über die 3 Jahre verändert?
In Corona deutlich abgenommen, ansonsten zugenommen
Wie häufig werden welche Bevölkerungsgruppen angezeigt / vgl zu wie viele Leute welcher Bevölkerungsgruppe wohnen dort?
Nicht in Datensatz glaube
2. Laden der Daten
Aufgabenstellung (10 Pkt.)
Laden Sie die Daten in die R-Sitzung und verschaffen Sie sich einen ersten Überblick
Welche Typen sind enthalten? X
Ist sichergestellt, dass alle Daten den richtigen Type haben? X
Haben die Daten irgendwelche “Seltsamkeiten” mit denen Sie umgehen müssen, wie z.B. anders codierte NA’s, mehrere Tabellen, … etc. #
Je nach Datensatz können Sie die Daten auch in eine Datenbank laden und dann auf diese in R zugreifen. X
Beschreiben Sie, was Sie tun müssen, bevor Sie die Daten im nächsten Abschnitt aufbereiten und bearbeiten können!
rm(list=ls())# Laden der Datenlibrary(readr)crimes.df.raw <-read_csv('Crime_Data_from_2020_to_Present.csv')
Warning: One or more parsing issues, call `problems()` on your data frame for details,
e.g.:
dat <- vroom(...)
problems(dat)
Rows: 986500 Columns: 28
── Column specification ────────────────────────────────────────────────────────
Delimiter: ","
chr (16): Date Rptd, DATE OCC, TIME OCC, AREA, AREA NAME, Rpt Dist No, Crm C...
dbl (11): DR_NO, Part 1-2, Crm Cd, Vict Age, Premis Cd, Weapon Used Cd, Crm ...
lgl (1): Crm Cd 4
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
# Welche Typen sind enthalten?sapply(crimes.df.raw, class)
DR_NO Date Rptd DATE OCC TIME OCC AREA
"numeric" "character" "character" "character" "character"
AREA NAME Rpt Dist No Part 1-2 Crm Cd Crm Cd Desc
"character" "character" "numeric" "numeric" "character"
Mocodes Vict Age Vict Sex Vict Descent Premis Cd
"character" "numeric" "character" "character" "numeric"
Premis Desc Weapon Used Cd Weapon Desc Status Status Desc
"character" "numeric" "character" "character" "character"
Crm Cd 1 Crm Cd 2 Crm Cd 3 Crm Cd 4 LOCATION
"numeric" "numeric" "numeric" "logical" "character"
Cross Street LAT LON
"character" "numeric" "numeric"
Einlesen der Modus Operandi Codes
library(tidyr)library(dplyr)
Attache Paket: 'dplyr'
Die folgenden Objekte sind maskiert von 'package:stats':
filter, lag
Die folgenden Objekte sind maskiert von 'package:base':
intersect, setdiff, setequal, union
── Column specification ────────────────────────────────────────────────────────
Delimiter: "\\s+"
chr (1): CodeBeschreibung
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
Modus Operandi –> richtige Nummern zum zuordnen mit der Tabelle von MO-Codes
Datum Format
Es existieren NAs in manchen Spalten
Nummern als String –> Nummern
In manchen Spalten befinden sich NAs, dazu gehören:
Weapon
Weapon Descd
Crime Codes –> nicht alle Taten
Überprüfung Aussagen der Metadaten:
Crm Cd should be the same as Crm Cd 1
Crm Cd 1 sollte die gleichen Werte wie Crm Cd haben:
Crm Cd
Indicates the crime committed. (Same as Crime Code 1)
Es gibt aber 1956 unterschiedliche Werte –> todo analyse später
Part 1-2 Weg löschen ?!
Area = Area Name ?!
Premise Cd = Premise Desc ?!
Weapon Use Cd = Weapon Desc ?!
3. Transformation & Bearbeitung
Aufgabenstellung (15 Pkt.)
Umcodierung von Daten, z.B. numerisch in kategorial
Subsetting der Daten
Joining von Datentabellen - falls nötig. Welcher Join ist notwendig? Warum?
Übersicht der transformierten Daten. Sie können hierzu Hilfsmittel wie glimpse(), skim() und head() benutzen, um Ihre Erläuterungen zu veranschaulichen.
Sind die sich ergebenden Daten so, wie Sie es erwartet haben? Warum oder warum nicht?
Aufbereitung / Umcodierung
# Aufbereitung der Liste mit Codes zur Zuordnung der Modus Operandicodes_to_numeric <-function(x) {if (is.na(x)) {return(NA) } else {return(as.numeric(strsplit(x, " ")[[1]])) }}# Transformation der Daten zu sinnvollen Datentypencrimes.df <-transform(crimes.df.raw,`Date Rptd`=as.Date(substr(`Date Rptd`, 1, 10), format ="%m/%d/%Y"),`DATE OCC`=as.Date(substr(`DATE OCC`, 1, 10), format ="%m/%d/%Y"),`TIME OCC`=as.integer(`TIME OCC`),`AREA`=as.integer(`AREA`),`Rpt Dist No`=as.integer(`Rpt Dist No`),`Crm Cd`=as.integer(`Crm Cd`),`Mocodes`=lapply(Mocodes, codes_to_numeric))
crmCd.diff <-which(crimes.df["Crm Cd"] != crimes.df["Crm Cd 1"])length(crmCd.diff)
[1] 1956
# Überprüfen, ob die Spalte nur NAs enthältif (all(is.na(crimes.df[["Crm Cd 4"]]))) { crimes.df[["Crm Cd 4"]] <-NULL}
# Löschen von Part 1-2# Todo Begründungcrimes.df[["Part 1-2"]] <-NULL
4. Geeignete Visualisierung und Aggregation der Daten
Aufgabenstellung (15 Pkt.)
Fassen Sie die Daten in einer geeigenten Form zur Beantwortung Ihrer formulierten Fragestellung zusammen. Ziehen Sie auch geeignete Visualisierungen der transformierten und/oder aggregierten Daten heran, um Ihre Aussagen entsprechend zu untermauern oder zu veranschaulichen.
Hier könne Sie auch geeignete statistische Verfahren bzw. Modellierungen nutzen, falls diese Ihnen bezüglich Ihrer Fragestellung weiterhelfen.
Welche Klassen von Straftaten werden wie häufig begangen?
Anzahl Proportional zu Schweregrad
Viele Diebstahle & andere Straftaten um Geld zu beschaffen
# Bibliothek ladenlibrary(leaflet)# Eine interaktive OpenStreetMap-Karte erstellenleaflet(crimes.df.no_id_theft) %>%addTiles() %>%# Standard-OSM-KartesetView(lng =-118.2437, lat =34.0522, zoom =9) %>%# Ansicht auf Los AngelesaddCircleMarkers(~LON, ~LAT, radius =5, color ="blue", stroke =FALSE, fillOpacity =0.8, popup =~paste("ID:", `Crm Cd Desc`)) # Popup mit der DR_NO ID
library(leaflet.extras)leaflet(crimes.df) %>%addTiles() %>%# Grundkarte hinzufügensetView(lng =-118.2437, lat =34.0522, zoom =9) %>%addHeatmap(lng =~LON,lat =~LAT,intensity =nrow(crimes.df), # Gewichtung (z.B. Anzahl der Vorfälle, falls vorhanden)blur =20, # Blur-Faktormax =0.05, # Maximale Intensitätradius =10# Radius für die Heatmap-Punkte )